ในรูบี โค้ดไม่ใช่แค่สคริปต์ที่คงที่—มันเป็น ระบบที่มีชีวิต. การสำรวจตนเอง คือพลังพิเศษที่ทำให้วัตถุสามารถมี 'ความรู้เกี่ยวกับตนเอง' ได้ แปลงพวกมันจากกล่องดำกลายเป็นแผนที่ที่ค้นหาได้ของฟังก์ชันต่างๆ แม้แต่ ค่าทันที เช่น จำนวนเต็ม สามารถสอบถามเรื่องต้นกำเนิดและศักยภาพของมันได้ในขณะทำงาน
1. อินเทอร์เฟซที่มีชีวิต
โดยการเรียกใช้ obj.methods(regular=true)เราสามารถเข้าถึงคำศัพท์เชิงหน้าที่ทั้งหมดของวัตถุได้ วัตถุประเภทช่วง (r = 1..10) แสดงให้เห็นถึงจำนวนเมธอดที่น่าประหลาดใจถึง 68 เมธอดที่แตกต่างกันซึ่งสะท้อนถึงการสืบทอดที่หลากหลายจาก Object และ Enumerable มิกซ์อิน
2. การค้นพบแบบไดนามิก
เมธอด respond_to? ทำหน้าที่เป็นผู้ควบคุมในขณะทำงาน ช่วยให้เกิด การตรวจสอบตามพฤติกรรม (ดั๊กไทป์ปิ้ง). แทนที่จะถามว่า 'เธอคืออะไร?' เราจะถามว่า 'เธอทำสิ่งนี้ได้ไหม?' ความยืดหยุ่นนี้ช่วยให้โปรแกรมสามารถปรับตัวตามความสามารถจริงได้ เช่น การตรวจสอบว่าสตริงตอบสนองต่อสัญลักษณ์ที่คล้ายกับการกำหนดค่า (=) หรือว่าค่าตัวเลขรองรับการสอบถามลำดับชั้นเฉพาะ การสอบถามลำดับชั้น.
3. สะพานเชื่อมระหว่างเอกสารเชิงเมตา
เครื่องมือเช่น RDoc ใช้คุณสมบัติเหล่านี้ในการสร้าง โครงสร้างการจัดเรียงตามตัวอักษร และแผนภูมิลายเซ็นเมธอดโดยอัตโนมัติ โดยการสอบถาม ค่าคงที่โมดูล และ ตัวแปรอินสแตนซ์นักพัฒนาสามารถเดินทางผ่านโครงสร้างพื้นที่ชื่อ (namespace) ทั้งหมดอย่างเป็นระบบ ปิดช่องว่างระหว่างไฟล์แหล่งที่มาและการทำงานจริง